package pers.tetris.tools;

import java.awt.*;
import java.awt.image.BufferedImage;

/**
 * 图片的处理工具：颜色变换等
 */
public class ImageUtil {
    /**
     * 进行颜色变换
     * @param rgb 原始颜色
     * @param angle 颜色轴旋转变换 0~1
     * @return 变换后的颜色
     */
    public static int rotateColor(int rgb,float angle){
        float[] hsb = Color.RGBtoHSB((rgb >> 16) & 0xFF, (rgb >> 8) & 0xFF, rgb & 0xFF, null);
        hsb[0] += angle;
        return Color.HSBtoRGB(hsb[0],hsb[1],hsb[2]);
    }

    /**
     * 相反颜色变换
     * @param rgb 原始颜色
     * @return 变换后的颜色
     */
    public static int reverseColor(int rgb){
        float[] hsb = Color.RGBtoHSB((rgb >> 16) & 0xFF, (rgb >> 8) & 0xFF, rgb & 0xFF, null);
        hsb[0] = - hsb[0];
        return Color.HSBtoRGB(hsb[0],hsb[1],hsb[2]);
    }

    /**
     * 使图片更明亮
     * @param rawImage 原始图片
     * @return 明亮化的图片
     */
    public static BufferedImage lighter(BufferedImage rawImage) {
        int width = rawImage.getWidth();
        int height = rawImage.getHeight();
        BufferedImage newImage = new BufferedImage(width, height, BufferedImage.TYPE_4BYTE_ABGR);
        for (int i = 0; i < width; i++) {
            for (int j = 0; j < height; j++) {
                newImage.setRGB(i,j,new Color(rawImage.getRGB(i,j)).brighter().getRGB());
            }
        }
        return newImage;
    }
}
